platform-dirs-rs
A small Rust library for obtaining platform dependant directory paths for application and user directories.
Note that the directory paths are not guaranteed to exist.
Allows for specifying if an application is CLI or GUI based, since on macOS, CLI applications are expected to conform to the XDG spec, while GUI applications are expected to conform to the Standard Directories guidelines.
Uses the following standards:
- Unix (excluding macOS GUI apps): XDG Base Directory and XDG User Directory
- macOS GUI apps: Standard Directories
- Windows: Known Folder
The API is still being flushed out, so feel free to PR any breaking changes or additions.
Installation
Add the following to Cargo.toml:
[]
= "0.1.2"
Examples
Displaying paths
use PathBuf;
use ;
Opening config file
use ;
use ;
Path list
AppDirs
Directory | Windows | Unix (excluding macOS GUI apps) | macOS (GUI apps) |
---|---|---|---|
cache_dir | %LOCALAPPDATA% (C:\Users\%USERNAME%\AppData\Local ) |
$XDG_CACHE_HOME ($HOME/.cache ) |
$HOME/Library/Caches |
config_dir | %APPDATA% (C:\Users\%USERNAME%\AppData\Roaming ) |
$XDG_CONFIG_HOME ($HOME/.config ) |
$HOME/Library/Application Support |
data_dir | %LOCALAPPDATA% (C:\Users\%USERNAME%\AppData\Local ) |
$XDG_DATA_HOME ($HOME/.local/share ) |
$HOME/Library/Application Support |
state_dir | %LOCALAPPDATA% (C:\Users\%USERNAME%\AppData\Local ) |
$XDG_STATE_HOME ($HOME/.local/state ) |
$HOME/Library/Application Support |
UserDirs
Directory | Windows | Unix (excluding macOS GUI apps) | macOS (GUI apps) |
---|---|---|---|
desktop_dir | {FOLDERID_Desktop} (C:\Users\%USERNAME%\Desktop ) |
XDG_DESKTOP_DIR ($HOME/Desktop ) |
$HOME/Desktop |
document_dir | {FOLDERID_Documents} (C:\Users\%USERNAME%\Documents ) |
XDG_DOCUMENTS_DIR ($HOME/Documents ) |
$HOME/Documents |
download_dir | {FOLDERID_Downloads} (C:\Users\%USERNAME%\Downloads ) |
XDG_DOWNLOAD_DIR ($HOME/Downloads ) |
$HOME/Downloads |
music_dir | {FOLDERID_Music} (C:\Users\%USERNAME%\Music ) |
XDG_MUSIC_DIR ($HOME/Music ) |
$HOME/Music |
picture_dir | {FOLDERID_Pictures} (C:\Users\%USERNAME%\Pictures ) |
XDG_PICTURES_DIR ($HOME/Pictures ) |
$HOME/Pictures |
public_dir | {FOLDERID_Public} (C:\Users\%USERNAME%\Public ) |
XDG_PUBLICSHARE_DIR ($HOME/Public ) |
$HOME/Public |
video_dir | {FOLDERID_Videos} (C:\Users\%USERNAME%\Videos ) |
XDG_VIDEOS_DIR ($HOME/Videos ) |
$HOME/Movies |